package com.beck.security;

import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;


public class MySecurityConfig1 extends WebSecurityConfigurerAdapter {
//    @Autowired
//    MyAuthenticationSuccessHandler myAuthenticationSuccessHandler;
//
//
//    @Autowired @Qualifier("myUserDetailsService")
//    UserDetailsService userDetailsService;
//
//    @Override
//    protected void configure(HttpSecurity http) throws Exception {
//        // 放行通过所有请求路径
//        // http.authorizeRequests().anyRequest().permitAll();
//        // 所有请求都需要认证
//        // http.authorizeRequests().anyRequest().authenticated();
//        // 提供默认的登录页面，默认用户名是user,密码是日志中输出的密码字符串
//        // http.formLogin();
//        // 部份请求通过，部份请求须认证
//        http.authorizeRequests().antMatchers("/*.html","/tologin").permitAll()
//                .anyRequest().authenticated();
//        //http.formLogin();
//        // 使用自定义登录页面，默认表单中的用户名与密码名是username与password
//        // 这里作了重新定义，登录页面是/tologin请求后的页面
//        http.formLogin().usernameParameter("username")
//                .passwordParameter("pwd").loginPage("/tologin")
//                .successHandler(myAuthenticationSuccessHandler);
//        // 此时使用的用户名仍然是username，密码仍然是日志中输出的的密码
//        // 如果要指定合法的用户名与密码，则要重写下面的方法
//        // http.su
//    }
//
//
//    @Override
//    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
//
//
//        // 这里模拟合法的用户名是tom,密码是123,加密器是自定义的，明码与密码相同
////        auth.inMemoryAuthentication()
////                .passwordEncoder(new MyPasswordEncoder())
////                .withUser("tom")
////                .password("123")
////                .roles("vip1");
//        // 与上相比，使用BCryptPasswordEncoder加密器
//        // 注意必须加入role
////        auth.inMemoryAuthentication()
////                .passwordEncoder(new BCryptPasswordEncoder())
////                .withUser("tom")
////                .password(new BCryptPasswordEncoder().encode("123"))
////                .roles("vip1");
//        // 也可创建一个User对象
////        Collection<GrantedAuthority> auths =
////            AuthorityUtils.commaSeparatedStringToAuthorityList("vip1,vip2");
////        User user = new User("alice",new BCryptPasswordEncoder().encode("123456"),auths);
////        auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()).withUser(user);
//
//        auth.userDetailsService(userDetailsService).passwordEncoder(new BCryptPasswordEncoder());
//    }
//
//
//    public static void main(String[] args) {
//        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
//        String pwd = passwordEncoder.encode("123");
//        System.out.println("pwd:"+pwd);
//    }
//
//
////    @Bean
////    public UserDetailsService userDetailsService() {
////        InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
////        System.out.println("===================================================");
////        manager.createUser(User.withUsername("admin").password(new BCryptPasswordEncoder().encode("123456")).roles("r1").build());
////        manager.createUser(User.withUsername("guest").password(new BCryptPasswordEncoder().encode("guest")).roles("r2").build());
////        return manager;
////    }
}
